# class MyTools:
#     """
#     关于类的说明
#     类名：每个单词的首字母都大写，驼峰名（eg：MyTools 具有一定意义）
#     类注释：三引号  位于类名下册
#     """
#
# mt1=MyTools()
# mt2=MyTools()
# mt3=MyTools()
# print(type(MyTools),mt1,mt2,mt3,type(mt3))


# class Person:
#     """
#     Person 类  是抽象的 name 和age 没有具体的值
#     """
#     def __init__(self,_name,_age):
#         """
#         类的初始化函数，用于初始化实例  数据
#         self 代表的就是未来构造出来的实例 比如p1、p2
#         """
#         print("初始化实例执行",id(self))
#         #通过点 给self 中添加属性与值
#         self.name=_name
#         self.age=_age
# # 构造实例时会执行初始化函数，通过初始化函数初始化实例数据
# # p1 和 p2 是Person 的两个具体的实例 实例有具体的name 和 age
# p1=Person("明明",15)
# print(id(p1),p1.name,p1.age)
# p2=Person("李李",18)
# print(id(p2),p2.name,p2.age)


# class Student:
#     """
#     Student 定义一个抽象的类  学生 id name age sex 没有具体的值
#     """
#     # 初始化函数
#     def __init__(self,_id,_name,_age,_sex):
#         """
#         类是初始化函数  构造初始化实例  数据
#
#         :param _id: 初始化id
#         :param _name: 初始化name
#         :param _age: 初始化age
#         :param _sex: 初始化sex
#         _id _name _age _sex 函数定义的形参
#         """
#         # 初始化实例
#         self.id=_id
#         self.name=_name
#         self.age=_age
#         self.sex=_sex
# # p1 面向学生这个对象 通过执行初始化函数将实参的值赋予形参  形参通过初始化函数将数据赋予初始化实例
# p1=Student("101","邓邓","23","男")
# print(p1,type(p1),id(p1),p1.id,p1.name,p1.age,p1.sex)


class Student:
    def __init__(self,id,name,age,sex):
        print("初始化函数执行了")
        self.id=id
        self.name=name
        self.age=age
        self.sex=sex
        print(self)
    def get_id(self):
        return self.id
    def set_id(self,id):
        self.id=id
    def get_name(self):
        return self.name
    def set_name(self,name):
        self.name=name
    def get_age(self):
        return self.age
    def set_age(self,age):
        self.age=age
    def get_sex(self):
        return self.sex
    def set_sex(self,sex):
        self.sex=sex
    def __str__(self):
        return (f"id：{self.get_id()}"
                f"姓名：{self.get_name()}"
                f"年龄：{self.get_age()}"
                f"性别：{self.get_sex()}")





p1=Student("101","deng","22","男")
print(id(p1),p1.id,p1.name,p1.age,p1.sex)
print(id(p1),p1.get_id(),p1.get_name(),p1.get_age(),p1.get_sex())
p1.set_id(102)
p1.set_name("zhang")
p1.set_age(22)
p1.set_sex("太监")
print(id(p1),p1.id,p1.name,p1.age,p1.sex)
print(id(p1),p1.get_id(),p1.get_name(),p1.get_age(),p1.get_sex())
print(p1)
